package com.eric.service;
import cn.dev33.satoken.util.SaResult;
import com.eric.domain.dto.MaterialOutDto;
import com.eric.domain.po.MaterialOut;
import com.github.yulichang.base.MPJBaseService;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.Date;

/**
 * <p>
 * 出库表单 服务类
 * </p>
 *
 * @author 新哥
 * @since 2024-03-12
 */
public interface IMaterialOutService extends MPJBaseService<MaterialOut> {

    SaResult saveOneService(MaterialOutDto materialOutDto, MultipartFile[] photoFiles, HttpServletRequest request);

    SaResult modifyOneService(MaterialOutDto materialOutDto, MultipartFile[] photoFiles, HttpServletRequest request, String[] photoList);

    SaResult deleteOneByIdService(Integer id);

    SaResult deleteByIdsService(ArrayList<Integer> ids);

    SaResult getAllByPage(Integer current, Integer pageSize);

    SaResult getOneByIdService(Integer id);

    SaResult getByBetweenTimesService(Date start, Date end, Integer current, Integer pageSize);

    SaResult getByCreateTimeService(Date createTime, Integer current, Integer pageSize);

    SaResult getByUpdateTimeService(Date updateTime, Integer current, Integer pageSize);

    SaResult getByMaterialNameService(String materialName, Integer current, Integer pageSize);

    SaResult getByLastUpdateByService(String lastByName, Integer current, Integer pageSize);

    SaResult getByCreateByService(String createByName, Integer current, Integer pageSize);

    SaResult getAllByMoon(Date moonDate, Integer current, Integer pageSize);

    SaResult getByTypeName(String parentType, String childTypeName, Integer orderBy, Integer current, Integer pageSize);

    SaResult getAllCountsService();

    SaResult getAllByMultifunctionNameService(String name, Integer current, Integer pageSize);

    SaResult getAllCountsByMultifunctionNameService(String name, Integer current, Integer pageSize);

    SaResult getAllCountsByBetweenTimes(Date start, Date end);

    SaResult getMaterialOutListByMaterialId(boolean timeStatus,Integer materialId, Integer current, Integer pageSize, String projectName,String recipient, Date start, Date end);

    SaResult getMaterialOutListCountByMaterialId(boolean timeStatus,Integer materialId, String projectName,String recipient, Date start, Date end);
}
